# -*- coding:utf-8 -*-

__author__='zhaoxp'

'''
用数量可变的位置参数减少视觉杂讯
'''


def log(message,value):
    if not value:
        print(message)
    else:
        print('%s: %s'%(message,', '.join((str(x) for x in value))))


#可变变量values，调用时要使用星号*加变量。这样做带来两个问题：
#1 因为变长参数在传递给函数时，它会先被转换为tuple，所以这个功能其实只是给编程人员带来方便的，也就是说如果参数很多不适用这种方法。
#2 如果将来函数有变，需要注意修改，参考log2
def log1(message,*values):
    if not values:
        print(message)
    else:
        print('%s: %s'%(message,', '.join((str(x) for x in values))))

def log2(sequence,message,*values):
    if not values:
        print('%s: %s'%s(sequence,message))
    else:
        print('%s: %s: %s'%(sequence,message,(', '.join(str(x) for x in values))))

if __name__=='__main__':
    print('*args as arguments')
    log('My numbers ar',[1,2,3])
    log('Hi there',[])
    print('\nlog1 func')
    favorites=[4,22,43]
    log1('My numbers ar',*favorites)
    log1('Hi there',[])
    print('\nlog2 func')
    log2(1,'Favorites',7,33)
    log2('Favorites',7,33)
